<?php

	session_start();
	require_once('LoginController.php');
	require_once('LoginView.php');
	require_once('LoginHandler.php');
	require_once('Database.php');
	require_once('DBconfig.php');
	require_once('RegisterView.php');
	require_once('RegisterController.php');
	require_once('RegisterHandler.php');
	require_once('NavigationView.php');
	require_once('Validering.php');
	
	class TestAll{
		
		public static function doTest(){
			
			$db = new Database();
			$Rhandler = new RegisterHandler($db);
			$Lhandler = new LoginHandler($db);
			$Rview = new RegisterView();
			$Lview = new Loginview();
			
			// Connectar till databas
			if($db->Connect(new DBconfig()) === false){
				echo "Not Connected, men vi borde va det";
				return false;
			}
			// Tar bort personen Erik utefall han redan finns
			$Rhandler->DeletePerson("Erik");
			
			// Kollar om Erik finns
			if($Rhandler->DoExists("Erik") === true)
			{
				echo "Personen borde inte finnas kvaraaa";
				return false; 
			}
			if($Rhandler->DoRegister("Erik", "123") === false){
				echo "Erik ska finnas nu";
				return false;
			}
			// Testar att registrera med omatchande lösenord
			$Rhandler->DeletePerson("Erik");
			
			// Kollar så Erik finns
			if($Rhandler->DoExists("Erik") === true)
			{
				echo "Namnet bör inte finnas men de gör det ändå";
				return false;
			}
			if($Rhandler->DoRegister("Erik", "123") === false){
				echo "Erik ska finnas nu igen";
				return false;
			}


			// Testar att logga in med fel användare
			if($Lhandler->Login("Erik", "123") === false){
				echo "Jag ska vara inloggad med erik nu";
				return false;
			}
			// Kollar inloggningen
			if($Lhandler->IsLoggedIn() === false)
			{
				echo "Vi bör vara inloggad då jag mata in rätt saker";
				return false;
			}
			
			$Lhandler->DoLogout();
			
			// Loggar in med fel anvnamn men rätt lösen
			if($Lhandler->Login("", "123") === true){
				echo "Loggar in med rätt lösenord men fel namn";
				return false;
			}
			// Kollar inloggningen
			if($Lhandler->IsLoggedIn() === true)
			{
				echo "Vi bör inte vara inloggad då jag mata in rätt lösenord men fel användarnamn";
				return false;
			}
			// Loggar in med rätt anv och lösen
			if($Lhandler->Login("Erik", "123") === false){
				echo "Vi bör vara inloggade nu då denna person finns";
				return false;
			}
			// Kollar inloggning 
			if($Lhandler->IsLoggedIn() === false){
				echo "Vi bör vara inloggade då jag angav rätt användarnamn och lösenord";
				return false; 
			}
			// Loggar ut 
			$Lhandler->DoLogout();
			// Kollar om Erik är fortfarande inloggad
			if($Lhandler->IsLoggedIn() === true){
				echo "Vi bör vara utloggad då vi loggade ut";
				return false; 
			}
			$Rhandler->DeletePerson("Erik");
			
			if($Rhandler->DoExists("Erik") === true){
				echo "Denna person bör inte finnas mer";
				return false; 
			}
			if($Rhandler->DoRegister("Erik", "123") === false){
				echo "Erik ska finnas nu igen";
				return false;
			}
			
			
			
			return true;
			$db->Close();
		}

		
}
$db = new Database();

$db->Connect(new DBconfig());

if(TestAll::doTest() === true){
	echo "Alla test lyckades";
	
}
$db->Close();	

	